package com.stained.white.goat.view;

import com.stained.white.goat.graphic.Dimension;
import com.stained.white.goat.render.TextRenderUtils;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Point;
import android.util.AttributeSet;

/**
 * ゲームボードのヘッダー部描画クラス.
 * @author stained white goat
 *
 */
public abstract class CenteringTextView extends DimensionView {

    /**
     * コンストラクター.
     * @param context context
     * @param dimension view次元情報
     */
    public CenteringTextView(Context context, Dimension dimension) {
        super(context, dimension);
    }

    /**
     * コンストラクター.
     * @param context context
     * @param attrs attrs
     */
    public CenteringTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    /**
     * 表示用文字列取得.
     * @return 表示用文字列
     */
    protected abstract String getText();

    /**
     * フォントサイズ取得.
     * @return フォントサイズ
     */
    protected abstract int getFontSize();

    @Override
    protected void onDraw(Canvas canvas) {
        // テキスト描画
        drawText(canvas);
    }

    /**
     * テキスト描画.
     * @param canvas canvas
     */
    private void drawText(Canvas canvas) {
        Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
        paint.setColor(getTextColor());
        paint.setTextSize(getFontSize());
        String text = getText();
        // 中心座標情報取得
        Point p = TextRenderUtils.getCenterPoint(this, paint, text);
        // 描画
        canvas.drawText(text, p.x, p.y, paint);
    }

    /**
     * 文字色取得.
     * @return 文字色
     */
    protected int getTextColor() {
        return Color.BLACK;
    }

}
